package com.xuchao.rabbit.b3;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.MessageProperties;
import com.xuchao.rabbit.utils.RabbitMqUtils;
import com.xuchao.rabbit.utils.SleepUtils;

import java.util.Scanner;

/**
 * @Author xuchao
 * @Date:2023/6/6 19:00
 * @description 发送消息
 * @Version 1.0
 */

public class Task02 {
    //队列名称
    public static final String TASK_QUEUE_NAME = "ack_queue";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMqUtils.getChannel();
        //开启发布确认
        channel.confirmSelect();
        //设置队列持久化
        boolean durable = true;
        //1.队列名称 2.队列是否持久化（持久化表示存储在磁盘中） 默认情况消息存储在内存中
        //3.该队列是否只供一个消费者进行消费 是否进行消息的共享 true可以多个消费者消费
        //4.是否自动删除，最后一个消费者断开连接后 该队列是否自动删除 true自动删除
        //5.其他参数
        channel.queueDeclare(TASK_QUEUE_NAME,durable,false,false,null);
        for(int i = 1; i <= 100; i++){
            String message = String.valueOf(i);
            //设置消息持久化
            AMQP.BasicProperties persistentTextPlain = MessageProperties.PERSISTENT_TEXT_PLAIN;
            //1.交换机 2.队列名称 3.其他参数 4.消息体
            channel.basicPublish("",TASK_QUEUE_NAME,persistentTextPlain,message.getBytes("UTF-8"));
            System.out.println("发送完成..."+message+"  "+channel.getNextPublishSeqNo());
            SleepUtils.sleep(1);
        }

    }
}
